package com.milo.java7.net.fileupload;

import java.io.*;
import java.net.Socket;

/**
 * @author: Milogenius
 * @create: 2019-09-20 11:21
 * @description: 文件上传客户端:读取本地文件,上传到服务器,读取服务器返回的数据
 * <p>
 *     1.明确
 *     数据源:c:\\1.jpg
 *     目的地:服务器
 *
 *     2.启动顺序
 *     先启动服务端,在启动客户端,保证c盘下存在文件1.jpg
 * </p>
 **/
public class TCPClient {

    public static void main(String[] args) throws IOException {

        //1.创建本地字节输入流FileInputStream对象
        FileInputStream fis = new FileInputStream("c:\\1.jpg");
        //2.创建一个客户端Socket对象
        Socket socket = new Socket("127.0.0.1", 8888);
        //3.使用Socket对象获取网络字节输出流
        OutputStream os = socket.getOutputStream();
        //4.使用本地字节输入流FileInputStream的方法read,来读取本地文件
        int len = 0;
        byte[] bytes = new byte[1024];
        while ((len = fis.read(bytes)) != -1) {
            //5.使用网络字节输出流OutputStream对象的方法write,把读取到的文件上传到服务器
            os.write(bytes,0,len);
        }
        //给服务器端响应文件读取结束标识
        socket.shutdownOutput();
        //6.使用Socket对象的方法getInputStream来获取网络字节输出流InputStream;
        InputStream is = socket.getInputStream();
        //7,使用网络字节输入流对象InputStream的方法read,来读取服务器的响应内容
        while ((len = is.read(bytes)) != -1) {
            System.out.println(new String(bytes,0,len));
        }
        //8.释放资源
        fis.close();
        socket.close();

    }
}
